1. Field of the Invention
The present invention is related to context-sensitive help for software applications, and more particularly to automated retrieval, evaluation, and presentation of focused, context-sensitive support items that are relevant to a particular user problem, error message, or other event.
2. Description of the Background Art
Many software programs are complex and difficult to use. As computers and software become increasingly powerful, and as users demand more and more enhanced functionality, the need for providing effective and useful software product support grows. More powerful programs are often more difficult to learn and use, and tend to be more difficult to troubleshoot in case of problems. In addition, as computers become more ubiquitous in households and more essential to everyday life, the user base for software applications expands to include more and more users who are relatively unsophisticated in the use of computers. Thus, increasing numbers of users are using increasingly complex programs, and many of those users have relatively little basic knowledge about computers.
Many software programs present error messages in language that is difficult for ordinary users to understand. FIGS. 1A and 1B show examples of typical dialog boxes 100 and 101 according to the prior art, containing error messages 102 and 103 that are relatively cryptic and do not provide adequate descriptions, particularly for novice users.
When confronted with inscrutable error messages and dialog boxes, frustrated users often seek assistance by calling a customer service number. Providing such assistance is expensive, however; increasing labor costs have forced many software manufacturers to reduce the number of available live customer service representatives and/or to charge users for telephone support. Hold times increase as fewer representatives are available, and the quality of such support decreases as less skilled representatives are hired in order to save costs. As a consequence, live manufacturer support for programs has become less available, less convenient, and less useful.
Another difficulty with conventional mechanisms for providing software support is that the increased complexity of programs makes it more difficult for customer support representatives to be fully conversant with the company's software and to be able to provide all the answers. Increased complexity of programs and operating systems also makes it more difficult for manufacturers to adequately test and predict the software's performance in various environments.
Companies seek to save on support costs by providing other mechanisms for users to obtain assistance. Support websites may be established, frequently asked questions (FAQ) listings may be compiled, and other mechanisms may be put in place. Such measures are often inadequate, however, as they fail to provide a novice user with answers that take into account the particular context of the user's problem. In addition, such measures assume that the user is able to access the support resource and to effectively search for the relevant support item; such assumptions are often incorrect.
In response to this lack of adequate developer-provided customer support, some users turn to the World Wide Web, UseNet, bulletin boards, and other online resources. In particular, users may seek postings of other users who may have encountered similar problems or who have some level of expertise with respect to the software product. Since many applications have thousands or even millions of users, it is often the case that a particular user's problem has been encountered, and hopefully solved, by other users as well. Software applications that have a large user base thus have a large pool of collective knowledge distributed among their users. In many online environments including UseNet newsgroups, bulletin boards, news forums, personal websites, and the like, users informally share solutions and suggestions.
However, these information sources are highly distributed, and often difficult and inefficient to search, particularly for novice users. In order to be successful, such searches often require that the user know what to search for, where to search, and what key words describe the problem or situation to be resolved. Many users may not be sufficiently sophisticated to be able to conduct such searches. In addition, a user may not realize that the particular context in which the problem occurred is a relevant item of information, and may fail to include such context information in the search. Often, the application context is not even visible to the user, so that it is virtually impossible for the user to perform effective searches that take into account the context of the problem. Finally, novice users may not even be aware of the existence of online resources that may be effective in solving problems.
Even for those users that are able to perform effective searches, searching may be cumbersome and inefficient, particularly when there are many different potential sources and forums. Evaluating search results is time-consuming and difficult. Users must often read through many useless search results before finding a useful one. In general, many search engines return inconsistent and over-inclusive results, which are particularly difficult for the user to quickly evaluate for quality, accuracy, and reliability.
Some users may try posting a description of their problem in news forums and on online bulletin boards. Such a strategy requires that the user identify and locate a relevant user forum for the particular problem. The user must accurately and effectively describe the problem for others to read, including the context in which the problem occurred. The user must wait for someone with the requisite expertise to happen upon the posting and reply to the user's query. Once a reply is received, it is often difficult for the user to assess the quality, accuracy, and reliability of advice provided in such environments. In fact, in many cases such postings result in multiple different (and often inconsistent) suggestions, which the user may not be able to evaluate or resolve.
Given the increasingly complex nature of today's software, the increasingly complex operating environments, the growing user base of non-technical users, and the decreasing levels of live customer support from manufacturers, it would be valuable for users to be able to more easily tap into the vast pool of user knowledge that exists in a wide user base. What is needed is an automated approach that improves the ability of users to understand and resolve problems with software and computers by utilizing the diffuse knowledge of the user community. What is further needed is an approach that eliminates the need for the user to be able to describe their problem to others, to formulate and conduct searches, and to attempt to define the context in which a problem occurred. What is further needed is an approach that searches for solutions automatically on behalf of a user. What is further needed is an approach that provides a mechanism to identify quality solutions to problems.